/**
 * dart 中的 List 高级函数
 */
void main() {
  // 定义一个List集合
  var fruits = ["apple", "orange", "kiwis", "grape", "banana"];
  print(fruits);

  // 集合截取
  var subFruits = fruits.getRange(1, 2+1).toList();
  print(subFruits);

  var restFruits = fruits.sublist(1);
  print(restFruits);

  // 按照指定条件查找满足条件的索引值
  // 如果有多个，返回第一个满足条件的索引
  var findIndex = fruits.indexWhere((element) => element.endsWith("ge"));
  print(findIndex);

  // 移除集合中的最后一个元素
  fruits.removeLast();
  print(fruits);

  // 按照指定条件移除满足条件的元素
  fruits.removeWhere((element) => element.endsWith("is"));
  print(fruits);

  // 按照范围移除集合中的元素
  fruits.removeRange(1, 2+1);
  print(fruits);

  // 替换集合中的元素
  fruits = ["apple", "orange", "kiwis", "grape", "banana"];
  fruits.replaceRange(3, 4+1, ["葡萄", "香蕉"]);
  print(fruits);

  // 遍历集合中的元素
  fruits.forEach((element) { 
      print(element);
  });
  

  // map reduce
  var list = [1, 2, 3, 4, 5];
  print(list);
  print(list.map((e) => e * 2).toList());

  var sum = list.reduce((value, element) => value + element);
  print(sum);

  // 集合分页
  var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var pageNum = 1; // 定义页码
  var pageSize = 3; // 定义页容量
  var pageNums = nums.skip(pageSize * (pageNum - 1)).take(pageSize).toList();
  print(pageNums);

  pageNum = 3; // 定义页容量
  pageNums = nums.skip(pageSize * (pageNum - 1)).take(pageSize).toList();
  print(pageNums);


}
